// PGLDataVectorPairs.cpp: implementation of the CPGLDataVectorPairs class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include <pgl/core/PGLDataVectorPairs.h>
#include <pgl/core/DataRegistry.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CPGLVectorPairRef

#ifndef PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE
#define PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE( className, classTypeFirst, classTypeSecond,	replaceClassName1, replaceClassName2 )\
void className::SerializeXML(CPGLArchive& ar) \
{ \
	markup::CMarkupArchive& xml = *((markup::CMarkupArchive*)ar.GetMarkup()); \
	if(ar.IsStoring()) \
	{ \
		if (IsFirst())\
		{\
			replaceClassName1 dummy; \
			GetVFirst(dummy.GetV()); \
			dummy.SerializeXML(ar); \
		}	\
		else\
		{\
			replaceClassName2 dummy; \
			GetVSecond(dummy.GetV()); \
			dummy.SerializeXML(ar); \
		}\
	} \
}
#endif

PGL_REGISTER_DATA_TYPE( CPGLVectorPairRefFF );
PGL_REGISTER_DATA_TYPE( CPGLVectorPairRefDI );
PGL_REGISTER_DATA_TYPE( CPGLVectorPairRefDS );
PGL_REGISTER_DATA_TYPE( CPGLVectorPairRefIS );
PGL_REGISTER_DATA_TYPE( CPGLVectorPairRefLL );

PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE( CPGLVectorPairRefFF , float, float, CPGLVectorF, CPGLVectorF);
PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE( CPGLVectorPairRefDI , double, int, CPGLVectorD, CPGLVectorI);
PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE( CPGLVectorPairRefDS , double, short, CPGLVectorD, CPGLVectorS);
PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE( CPGLVectorPairRefIS , int, short, CPGLVectorI, CPGLVectorS);
PGL_IMPLEMENT_VECTORPAIRREF_DATA_TYPE( CPGLVectorPairRefLL , long, long, CPGLVectorL, CPGLVectorL);

